const _tslib = require('tslib');
const _util = require('@antv/util');
import { merge } from 'lodash';

import { nodeDefaultOptions } from '../utils/defaultOptions';

export default function(G6) {
    G6.registerNode(
        'normal',
        {
            options: {
                ...nodeDefaultOptions,
            },
            getShapeStyle(cfg) {
                var defaultStyle = this.getOptions(cfg).style;
                var strokeStyle = {
                    stroke: cfg.color,
                }; // 如果设置了color，则覆盖默认的stroke属性
                var style = (0, _util.mix)({}, defaultStyle, strokeStyle);
                var style2 = _util.mix({}, defaultStyle, strokeStyle);
                console.log(style2, 'style2');
                var size = this.getSize(cfg);
                var width = style.width || size[0];
                var height = style.height || size[1];
                var styles = (0, _tslib.__assign)(
                    {
                        x: -width / 2,
                        y: -height / 2,
                        width: width,
                        height: height,
                    },
                    style
                );
                return styles;
            },
        },
        'base-node'
    );

    /**
     * success ：成功
     * warning ：警告 // todo: 写在了状态中 后续提出来
     * fail    : 失败
     * running ：运行中
     */
    G6.registerNode(
        'success',
        {
            options: merge({}, nodeDefaultOptions, {
                style: {
                    stroke: '#8BCDF7',
                },
                stateIcon: {
                    img: require('../icon/succ.svg'),
                },
            }),
        },
        'normal'
    );

    G6.registerNode(
        'fail',
        {
            options: merge({}, nodeDefaultOptions, {
                style: {
                    stroke: 'red',
                },
                stateIcon: {
                    img: require('../icon/fail.svg'),
                    test: {
                        aaa: 'color',
                    },
                },
            }),
        },
        'normal'
    );
    G6.registerNode(
        'running',
        {
            options: merge({}, nodeDefaultOptions, {
                style: {
                    stroke: '#9ED5F8',
                },
                stateIcon: {
                    loading: true,
                },
            }),
        },
        'normal'
    );
}
